home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 46 / Amiga Format CD46 (1999-10-20)(Future Publishing)(GB)[!][issue 1999-12].iso / -in_the_mag- / reader_requests / scilab / demos / icse / navet.ex < prev    next >
Text File  |  1999-09-16  |  5KB  |  135 lines

  1. //                navet.bas : demo de icse
  2. //  calcul trajectoire optimale de rentree d'une navette spatiale
  3. //  *************************************************************
  4. //
  5. exec('icse.contexte');
  6. // les doubles slash introduisent des commentaires
  7. //
  8. t0=0.d0;    // instant initial
  9. tf=1.d0;    // instant final
  10. dtf=0;
  11. ermx=1.d-6; // test d'arret absolu sur la valeur du second membre dans
  12.             // la resolution de l'etat
  13. iu=[0,0,1]; //  iu   :indications sur la structure du controle
  14.     //    iu(1)=1 si l'etat initial depend du controle constant,0 sinon
  15.     //    iu(2)=1 si l'etat initial depend du controle variable,0 sinon
  16.     //    iu(3)=1 si le second membre depend du controle constant,0 sinon
  17. nuc=1;      // nombre de parametres independants du temps
  18. nuv=1;      // nombre de parametres dependants du temps
  19. ilin=0;     // indicateur de linearite :
  20.        // 0 pour un systeme non affine
  21.        // 1 pour un systeme affine dont la partie lineaire n'est pas autonome
  22.        // ilin=2 pour un systeme affine dont la partie lineaire est autonome
  23. nti=150;    //nombre de pas de temps correspondant a dti (premier pas de temps)
  24. dti=tf/nti;
  25. ntf=00;     // nombre de pas de temps correspondant a dtf (second pas de temps)
  26.             // si l'on utilise un seul pas de temps,on doit prendre ntf=0
  27. ny=4;       // dimension de l'etat a un instant donne
  28. nea=0;      // nombre d'equations algebriques (eventuellement nul)
  29. itmx=10;    // nombre maximal d'iterations dans la resolution de
  30.             // l'equation d'etat discrete a un pas de temps donne
  31. nex=1;      // nombre d'experiences effectuees
  32. nob=3;      // dimension du vecteur des mesures pour une experience donnee
  33.             // en un instant donne
  34. ntob=1;     // nombre d'instants de mesure pour une experience donnee
  35. ntobi=1;    // nombre d'instants de mesure correspondant a dti (premier
  36.             // pas de temps)
  37. //
  38. nu=nuc+nuv*(nti+ntf+1); // dimension du vecteur des parametres de controle
  39. //
  40. //  uc(1,nuc)          :controle constant
  41. echtf=2000;
  42. uc=[2500/echtf];
  43. //  uv(1,nuv*(nti+ntf)):controle variable
  44. //if nuv>0, uv(1,nuv*(nti+ntf+1))=0; end;
  45.  alpha0=.20704/.029244; legu='alpha initial : ann. cz';  //annulation cz
  46.  alpha0=17.391;         legu='alpha initial : finesse max';//finesse maximum
  47. legu=' navette americaine .'+legu;
  48. if nuv>0, uv=alpha0*ones(1,nuv*(nti+ntf+1)); end;
  49. //  itu(1,nitu)        :tableau de travail entier reserve a
  50. //                      l'utilisateur
  51. itu=[0];
  52. //  dtu(1,ndtu)        :tableau de travail double precision reserve
  53. //                      a l'utilisateur
  54. raddeg=%pi/180;
  55. //dtu=[ 249.9,         ..//s      1
  56. //      .078540,       ..//cx0    2
  57. //     -.0061592,      ..//cx1    3
  58. //      .621408e-3,    ..//cx2    4
  59. //     -.207040,       ..//cz0    5
  60. //      .029244,       ..//cz1    6
  61. //       83388,        ..//zm     7
  62. //     3.9860119e14,   ..//zmu    8
  63. //     6378166,        ..//rt     9
  64. //     1.2,            ..//ro0   10
  65. //     6700,           ..//h     11
  66. //     raddeg,         ..//      12
  67. //     echtf,          ..//echtf 13
  68. //     0,0,0,0,0,0,0,  ..// inutilises    14 a 20
  69. //     1000,           ..//mise a echelle v    21
  70. //     1,              ..//mise a echelle gam  22
  71. //     1.e5,           ..//mise a echelle z    23
  72. //     1,           ..//mise a echelle l       24
  73. //     1.e6      ];      //cpenal              25
  74. dtu=[ 249.9,         ..
  75.       .078540,       ..
  76.      -.0061592,      ..
  77.       .621408e-3,    ..
  78.      -.207040,       ..
  79.       .029244,       ..
  80.        83388,        ..
  81.      3.9860119e14,   ..
  82.      6378166,        ..
  83.      1.2,            ..
  84.      6700,           ..
  85.      raddeg,         ..
  86.      echtf,          ..
  87.      0,0,0,0,0,0,0,  ..
  88.      1000,           ..
  89.      1,              ..
  90.      1.e5,           ..
  91.      1,           ..
  92.      1.e6      ];      //cpenal              25
  93. //
  94. y0=[7803, -1*raddeg, 121920, 0]; // etat initial
  95. //          (valeur arbitraire si iu(1) ou iu(2) est non nul)
  96. y0=y0./dtu(1,21:24);   //mise a l'echelle de y0
  97. //  tob(1,ntob)        :instants de mesure (compatibilite avec ntob
  98. //                      et ntobi)
  99. tob=[1];
  100. binf=-20*ones(1,nu);//  borne inf des parametres
  101. binf(1,1)=2500/echtf;
  102. bsup=40*ones(1,nu);// borne sup des parametres
  103. bsup(1,1)=4000/echtf;
  104. //
  105. obs(nob,ny)=0; // matrice d'observation
  106. //
  107. //don=[762,            ..//vfin         1
  108. //     -5*raddeg,      ..//gamma final  2
  109. //     24384    ];     ..//zfin         3
  110. don=[762,            ..
  111.      -5*raddeg,      ..
  112.      24384    ];
  113. don=don./dtu(1,21:23);      // mise a l'echelle
  114. nomf='icsenf';   // noms de subroutines de dynamique
  115. legfb=' croissant ';
  116. // changements pour calculer en temps retrograde
  117. retro=1;
  118. if retro>0;
  119. legfb=' retrograde '; ..
  120.   don1=don; ..
  121.   don=y0(1,1:3); ..
  122.   y0(1,1:3)=don1; ..
  123.   nomf='icsenb' ; end ;
  124. //
  125. nap=20;     // nombre d'appels du simulateur
  126. imp=2;      // niveau de debug pour optim
  127. large=100;  // taille de nu au dela de laquelle on choisit un optimiseur
  128. // pour les problemes de grande taille (alg='gc' dans l'appel de optim)
  129. //
  130. exec('icseinit.ex');   
  131. [co,u,g,itv,dtv]=icse(u,nomf,nap,imp);
  132.  
  133.  
  134.  
  135.